iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
Security

駭客新手指南:從程式小白轉職成初級駭客系列 第 16

Day16 逆向工程:讓反編譯成為你的秘密武器

  • 分享至 

  • xImage
  •  

上一篇我們介紹完關於逆向工程的基礎,這次我們將透過一個簡單的實作範例,讓大家進一步了解逆向工程的實際應用。我會先用python寫一個小程式,並對這個程式做反編譯。關於程式的內容及寫法我就不多著墨了,大家可以直接複製來進行實作。

1. 選擇要實作的程式碼

這邊我寫了一個很簡單的檢查密碼程式:password.py

def main():
    password = input("Enter password")

    if password == "test":
        print("yes")
    else:
        print("no")
    input("press enter to close")

if _name_ == "_main_":
    main()

2. 編譯

因為我不是選擇使用已編譯完畢的程式,所以要先編譯成二進位執行檔。

python -m compileall password.py

編譯完成後,會出現一個 pycache 資料夾,並且裡面會有 .pyc 檔案,這就是我們要進行逆向分析的檔案。

3. 開始逆向

使用uncompyle6 反編譯:(若無uncompyle6請先安裝:pip install uncompyle6)

uncompyle6 __pycache__/password.cpython-版本號.pyc > decompiled_password.py

將 版本號 替換成你編譯後的檔案名稱中的版本號(例如 311、312 等)。反編譯完成後,會在原先資料夾出現 decompiled_password.py 檔案,打開這個檔案即可查看原始程式碼及密碼。

疑惑解析

為何實作沒用到匯編語言?

1.Python 程式屬於高階語言,相比於匯編語言更加易於理解和操作。高階語言的設計初衷就是為了讓我們能夠更方便地撰寫程式,因此我們可以直接查看原始碼來進行分析,不需要把他轉換為匯編語言。
2. 匯編語言較為複雜,不適合初學者(包括我)
3. 我們的目的是了解逆向工程的基本概念和實際應用,而不一定要深入匯編語言的細節。

希望這三篇文章能幫助大家更好地理解逆向工程的基本概念,以及如何實際操作。接下來我們會回到其他駭客常使用到的攻擊手法、介紹,還有實作的部分。


上一篇
Day15 匯編語言及逆向工具
下一篇
Day17 惡意軟件的基本知識與類型
系列文
駭客新手指南:從程式小白轉職成初級駭客30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言